#实现一个命令行版本学生管理系统
import os.path
import sys
from random import choice
#使用全局变量管理学生信息
#每个元素是字典，每个字典表示一个同学
students=[]

#存档函数
def save():
    #此时这个文件与这个在同一个目录内
    with open("学生档案记录.txt","w",encoding="utf8") as f:
        for s in students:
            f.write(f"{s['student_name']}|{s['student_gender']}|{s['student_class']}|{s['student_id']}")
        print(f"存档成功，共存储了{len(students)}条信息")
#读档程序
def load():
    #避免读的时候文件不存在引发异常
    if not os.path.exists("学生档案记录.txt"):
        return
    #读档的时候旧的数据要清空

    global students
    students=[]
    with open("学生档案记录.txt","r",encoding="utf8") as f:
        for line in f:
            #针对这一行按照|切割
            #切分前要换行
            line =line.strip()
            tokens=line.split(' | ')
            if len(tokens)!=4:
                print(f'当前行格式有问题，line={line}')
                continue
            student={
                'student_name':tokens[0],
                'student_gender':tokens[1],
                'student_class':tokens[2],
                'student_id':tokens[3],
            }
            students.append(student)
            print(f"读档成功，共读取了{len(students)}条数据")



#新增学生
def Insert():
    print("新增学生开始")

    student_name= input("请输入学生的姓名")
    #性别只有男和女
    student_gender=input("请输入学生的性别")
    if student_gender not in('男','女'):
        print("内容不符合要求，新增失败")
        return

    student_class=input("请输入学生的班级")
    student_id=input("请输入学生的学号")
    #使用字典使得这些信息组装起来
    student={
        'student_name':student_name,
        "student_gender":student_gender,
        "student_class":student_class,
        "student_id":student_id,
    }
    global students
    students.append(student)
    save()
    print("新增学生结束")
#显示学生
def show():
    #遍历全局列表，把每个学生信息打印出来
    print("显示学生开始")
    for s in students:
        print(f"[{s['student_name']}]\t{s['student_gender']}\t{s['student_class']}\t{s['student_id']}\t")
    print(f"显示学生结束。显示了{len(students)}条数据")
#查找学生
def find():
    print("查找学生开始")
    name =input("请输入查找的学生的名字")
    count=0;
    for s in students:
        if name==s['student_name']:
            print(f"[{s['student_name']}]\t{s['student_gender']}\t{s['student_class']}\t{s['student_id']}\t")
            count+=1
    print(f"共找到{count}个匹配的同学")
    print("查找学生结束")
#删除学生
def delete():
    print("删除学生开始")
    student_id=input("请输入要删除的学生的学号>")
    for s in students:
        if student_id==s['student_id']:
            print("删除s['student_name']同学的信息")
            students.remove(s)
    save()
    print("删除学生结束")
def menu():
    print("1、新增学生")
    print("2、展示学生")
    print("3、查找学生")
    print("4、删除学生")
    print("0、推出程序")
    choice = input("请输入您的选项>")
    return  choice
def main():
    #入口函数
    #通过控制台与用户交互
    print("--------------------------")
    print("欢迎来到学生管理系统！！！！！")
    print("--------------------------")
    load()
    while True:
        #通过menu创建菜单
        choice=menu()
        if choice=='1':
            #新增学生
            Insert()
        elif choice=='2':
            #展示所有学生
            show()
        elif choice=='3':
            #查找学生
            find()
        elif choice=='4':
            #删除学生
            delete()
        elif choice=='0':
            #推出系统
            print("感谢你的使用，下次再见！")
            sys.exit(0)
        else:
            #进入下次循环，再次输入
            print("输入错误请重新输入>")

main()












